/*************************************************
 * 描述：表格公共数据定义
 *
 * File：head.h
 * Author：zhangzhiming@mozihealthcare.cn
 * Date：25-10-15
 * Update：
 * ************************************************/
#ifndef HEAD_H
#define HEAD_H
#include <QString>
#include <QColor>

namespace cxitable
{
	/**
	 * 标题配置预定义占位符：
	 *
	 */
	// 分组值
	const QString DATA = "${data}";
	// 分组标题
	const QString TITLE = "${title}";
	// 分组统计
	const QString COUNT = "${count}";

	/**
	 * 表格分组配置
	 */
	struct GroupConfig
	{
		// 分组列
		int column;
		// 分组标题
		QString groupTitle;
	};

	/**
	 * 表格列委托类型
	 */
	enum class ItemDelegateType : int
	{
		// 默认
		Default,
		// 文本框
		TextBox,
		// 复选框
		CheckBox,
		// 下拉框
		ComboBox,
		// 下拉表格框
		TableComboBox,
		// 按钮
		Button,
		// 日期
		Date,
		// 时间
		Time,
		// 日期+时间
		DateTime
	};

	/**
	 * 表格列下拉框数据项
	 */
	struct ComboBoxItem
	{
		QString key;
		QString text;
		bool isSelected = false;
	};

	/**
	 * 表格列配置
	 */
	struct GridColumnConfig
	{
		QString field;
		QString caption;
		int width;
		bool visible;
		int visibleIndex;
		QString format;
		bool readOnly;
		bool fix;
		bool autoWidth;
		ItemDelegateType style;
		bool floatCellContent;
		QColor headForeColor;
		QColor headBackColor;
		Qt::Alignment textAlignment;
		bool isBold;

		GridColumnConfig(const QString& field, const QString& caption)
			: field(field),
			  caption(caption),
			  width(100),
			  visible(true),
			  visibleIndex(0),
			  readOnly(false),
			  fix(false),
			  autoWidth(false),
			  style(ItemDelegateType::Default),
			  floatCellContent(false),
			  isBold(false)
		{
		}

		GridColumnConfig(const QString& field, const QString& caption, ItemDelegateType style)
			: field(field),
			  caption(caption),
			  width(100),
			  visible(true),
			  visibleIndex(0),
			  readOnly(false),
			  fix(false),
			  autoWidth(false),
			  style(style),
			  floatCellContent(false),
			  isBold(false)
		{
		}
	};
}
#endif //HEAD_H